export function formatDate(date, fmt) {
  // 正则匹配/(y+)/ 字符串fmt--'yyyy-MM-dd hh:mm'，如果匹配到，就获取第一个匹配的文本，即yyyy,
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
    // 将yyyy替换成年份，如1970
    // date.getFullYear()的类型是number,(date.getFullYear() + '') 加个空字符串将number转成字符串类型
    // substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
  }
  const o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  }
  for (const k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      const str = o[k] + ''
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str))
    }
  }
  return fmt
}

// 日期计算
export function computePreDate(day) {
  const days = [1, 3, 7, 30]
  const date = _.now() - (24 * 60 * 60 * parseInt(days[day]) * 1000)
  return [formatDate(new Date(date), 'yyyy-MM-dd hh:mm:ss'), formatDate(new Date(_.now()), 'yyyy-MM-dd hh:mm:ss')]
}
// 日期计算
export function computeNextDate(day) {
  const days = [1, 3, 7, 30]
  const date = _.now() + (24 * 60 * 60 * parseInt(days[day]) * 1000)
  return [formatDate(new Date(_.now()), 'yyyy-MM-dd hh:mm:ss'), formatDate(new Date(date), 'yyyy-MM-dd hh:mm:ss')]
}

function padLeftZero(str) {
  return ('00' + str).substr(str.length)
}

/*
 * formatMoney(value,type)
 * 功能：金额按千位逗号分割
 * 参数：value，需要格式化的金额数值.
 * 参数：type,判断格式化后的金额是否需要小数位.
 * 返回：返回格式化后的数值字符串.
 */
// export function formatMoney(value, type) {
//   if (/[^0-9\.]/.test(value))
//     return "0"
//   if (value == null || value == "")
//     return "0"
//   value = value.toString().replace(/^(\d*)$/, "$1.")
//   value = (value + "00").replace(/(\d*\.\d\d)\d*/, "$1")
//   value = value.replace(".", ",")
//   var re = /(\d)(\d{3},)/
//   while (re.test(value))
//     value = value.replace(re, "$1,$2")
//   value = value.replace(/,(\d\d)$/, ".$1")
//   if (type == 0) { // 不带小数位(默认是有小数位)
//     var a = value.split(".")
//     if (a[1] == "00") {
//       value = a[0]
//     }
//   }
//   return value
// }
export function formatMoney(n) {
  const re = /\d{1,3}(?=(\d{3})+$)/g
  n = delcommafy1(n)
  const n1 = n.replace(/^(\d+)((\.\d+)?)$/, function(s, s1, s2) {
    return s1.replace(re, '$&,') + s2
  })
  return n1
}
export function formatMoneyInfo(n) {
  const re = /\d{1,3}(?=(\d{3})+$)/g
  n = delcommafy1(n) / 10000
  return n
}

function delcommafy1(num) {
  if (_.isEmpty(num)) return num
  num = num.toString()
  num = num.replace(/,/gi, '')
  return num
}
export function delcommafy(num) {
  if (_.isEmpty(num)) return num
  num = num.toString()
  num = num.replace(/,/gi, '')
  return num
}

